package tpoo.client.controllers.handlers;

import static tpoo.common.services.utils.ServiceConstants.*;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.handlers.HandlerUtil;

import tpoo.common.dto.model.users.UserDTO;
import tpoo.common.services.UserService;
import tpoo.common.services.exceptions.ServiceException;
import tpoo.common.services.utils.ServiceAdmin;
import tpoo.common.services.utils.ServiceConstants;
import tpoo.common.utils.UserSession;

/**
 * Our sample handler extends AbstractHandler, an IHandler base class.
 * 
 * @see org.eclipse.core.commands.IHandler
 * @see org.eclipse.core.commands.AbstractHandler
 */
public class LogoutHandler extends AbstractHandler {
	
	public final static String ID= "tpoo-client.controllers.handlers.LogoutHandler";
	
	/**
	 * The constructor.
	 */
	public LogoutHandler() {
	}

	/**
	 * the command has been executed, so extract extract the needed information
	 * from the application context.
	 */
	public Object execute(ExecutionEvent event) throws ExecutionException {
		IWorkbenchWindow window = HandlerUtil
				.getActiveWorkbenchWindowChecked(event);
		UserService us;
		try {
			us = (UserService) ServiceAdmin.getService(USER_SERVICE);
			UserDTO udto = UserSession.getInstance().getUser();
			us.logout(udto);
			
			//UserSession.getInstance().delete(udto);
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
}
